home *** CD-ROM | disk | FTP | other *** search
/ Australian Personal Computer 2004 July / APC0407D2.iso / workshop / onlineco / files / ImageMagick-6.0.1-Q16-windows-dll.exe / {app} / PerlMagick / demo / demo.pl < prev    next >
Encoding:
Perl Script  |  2004-02-15  |  8.6 KB  |  373 lines

  1. #!/usr/bin/perl
  2. #
  3. # Overall demo of the major PerlMagick methods.
  4. #
  5. use Image::Magick;
  6.  
  7. #
  8. # Read model & smile image.
  9. #
  10. print "Read...\n";
  11. $null=Image::Magick->new;
  12. $null->Set(size=>'70x70');
  13. $x=$null->ReadImage('NULL:black');
  14. warn "$x" if "$x";
  15.  
  16. $model=Image::Magick->new();
  17. $x=$model->ReadImage('model.gif');
  18. warn "$x" if "$x";
  19. $model->Label('Magick');
  20. $model->Set(background=>'white');
  21.  
  22. $smile=Image::Magick->new;
  23. $x=$smile->ReadImage('smile.gif');
  24. warn "$x" if "$x";
  25. $smile->Label('Smile');
  26. $smile->Set(background=>'white');
  27. #
  28. # Create image stack.
  29. #
  30. print "Transform image...\n";
  31. $images=Image::Magick->new();
  32.  
  33. print "Adaptive Threshold...\n";
  34. $example=$model->Clone();
  35. $example->Label('Adaptive Threshold');
  36. $example->AdaptiveThreshold('5x5+5%');
  37. push(@$images,$example);
  38.  
  39. print "Add Noise...\n";
  40. $example=$model->Clone();
  41. $example->Label('Add Noise');
  42. $example->AddNoise("Laplacian");
  43. push(@$images,$example);
  44.  
  45. print "Annotate...\n";
  46. $example=$model->Clone();
  47. $example->Label('Annotate');
  48. $example->Annotate(text=>'Magick',geometry=>'+0+20',font=>'Generic.ttf',
  49.   fill=>'gold',gravity=>'North',pointsize=>14);
  50. push(@$images,$example);
  51.  
  52. print "Blur...\n";
  53. $example=$model->Clone();
  54. $example->Label('Blur');
  55. $example->Blur('0.0x1.0');
  56. push(@$images,$example);
  57.  
  58. print "Border...\n";
  59. $example=$model->Clone();
  60. $example->Label('Border');
  61. $example->Border(geometry=>'6x6',color=>'gold');
  62. push(@$images,$example);
  63.  
  64. print "Channel...\n";
  65. $example=$model->Clone();
  66. $example->Label('Channel');
  67. $example->Channel();
  68. push(@$images,$example);
  69.  
  70. print "Charcoal...\n";
  71. $example=$model->Clone();
  72. $example->Label('Charcoal');
  73. $example->Charcoal('0x1');
  74. push(@$images,$example);
  75.  
  76. print "Composite...\n";
  77. $example=$model->Clone();
  78. $example->Label('Composite');
  79. $example->Composite(image=>$smile,compose=>'over',geometry=>'+35+65');
  80. push(@$images,$example);
  81.  
  82. print "Contrast...\n";
  83. $example=$model->Clone();
  84. $example->Label('Contrast');
  85. $example->Contrast();
  86. push(@$images,$example);
  87.  
  88. print "Convolve...\n";
  89. $example=$model->Clone();
  90. $example->Label('Convolve');
  91. $example->Convolve([1, 1, 1, 1, 4, 1, 1, 1, 1]);
  92. push(@$images,$example);
  93.  
  94. print "Crop...\n";
  95. $example=$model->Clone();
  96. $example->Label('Crop');
  97. $example->Crop(geometry=>'80x80+25+50');
  98. push(@$images,$example);
  99.  
  100. print "Despeckle...\n";
  101. $example=$model->Clone();
  102. $example->Label('Despeckle');
  103. $example->Despeckle();
  104. push(@$images,$example);
  105.  
  106. print "Draw...\n";
  107. $example=$model->Clone();
  108. $example->Label('Draw');
  109. $example->Draw(fill=>'none',stroke=>'gold',primitive=>'circle',
  110.   points=>'60,90 60,120',strokewidth=>2);
  111. push(@$images,$example);
  112.  
  113. print "Detect Edges...\n";
  114. $example=$model->Clone();
  115. $example->Label('Detect Edges');
  116. $example->Edge();
  117. push(@$images,$example);
  118.  
  119. print "Emboss...\n";
  120. $example=$model->Clone();
  121. $example->Label('Emboss');
  122. $example->Emboss();
  123.  
  124. print "Equalize...\n";
  125. push(@$images,$example);
  126. $example=$model->Clone();
  127. $example->Label('Equalize');
  128. $example->Equalize();
  129. push(@$images,$example);
  130.  
  131. print "Implode...\n";
  132. $example=$model->Clone();
  133. $example->Label('Explode');
  134. $example->Implode(-1);
  135. push(@$images,$example);
  136.  
  137. print "Flip...\n";
  138. $example=$model->Clone();
  139. $example->Label('Flip');
  140. $example->Flip();
  141. push(@$images,$example);
  142.  
  143. print "Flop...\n";
  144. $example=$model->Clone();
  145. $example->Label('Flop');
  146. $example->Flop();
  147. push(@$images,$example);
  148.  
  149. print "Frame...\n";
  150. $example=$model->Clone();
  151. $example->Label('Frame');
  152. $example->Frame('15x15+3+3');
  153. push(@$images,$example);
  154.  
  155. print "Fx...\n";
  156. $example=$model->Clone();
  157. $example->Label('Fx');
  158. push(@$images,$example->Fx(expression=>'0.5*u'));
  159.  
  160. print "Gamma...\n";
  161. $example=$model->Clone();
  162. $example->Label('Gamma');
  163. $example->Gamma(1.6);
  164. push(@$images,$example);
  165.  
  166. print "Gaussian Blur...\n";
  167. $example=$model->Clone();
  168. $example->Label('Gaussian Blur');
  169. $example->GaussianBlur('0.0x1.5');
  170. push(@$images,$example);
  171.  
  172. print "Gradient...\n";
  173. $gradient=Image::Magick->new;
  174. $gradient->Set(size=>'130x194');
  175. $x=$gradient->ReadImage('gradient:#20a0ff-#ffff00');
  176. warn "$x" if "$x";
  177. $gradient->Label('Gradient');
  178. push(@$images,$gradient);
  179.  
  180. print "Grayscale...\n";
  181. $example=$model->Clone();
  182. $example->Label('Grayscale');
  183. $example->Quantize(colorspace=>'gray');
  184. push(@$images,$example);
  185.  
  186. print "Implode...\n";
  187. $example=$model->Clone();
  188. $example->Label('Implode');
  189. $example->Implode(0.5);
  190. push(@$images,$example);
  191.  
  192. print "Level...\n";
  193. $example=$model->Clone();
  194. $example->Label('Level');
  195. $example->Level(level=>'20%');
  196. push(@$images,$example);
  197.  
  198. print "Median Filter...\n";
  199. $example=$model->Clone();
  200. $example->Label('Median Filter');
  201. $example->MedianFilter();
  202. push(@$images,$example);
  203.  
  204. print "Modulate...\n";
  205. $example=$model->Clone();
  206. $example->Label('Modulate');
  207. $example->Modulate(brightness=>110,saturation=>110,hue=>110);
  208. push(@$images,$example);
  209. $example=$model->Clone();
  210.  
  211. print "Monochrome...\n";
  212. $example->Label('Monochrome');
  213. $example->Quantize(colorspace=>'gray',colors=>2,dither=>'false');
  214. push(@$images,$example);
  215.  
  216. print "Negate...\n";
  217. $example=$model->Clone();
  218. $example->Label('Negate');
  219. $example->Negate();
  220. push(@$images,$example);
  221.  
  222. print "Normalize...\n";
  223. $example=$model->Clone();
  224. $example->Label('Normalize');
  225. $example->Normalize();
  226. push(@$images,$example);
  227.  
  228. print "Oil Paint...\n";
  229. $example=$model->Clone();
  230. $example->Label('Oil Paint');
  231. $example->OilPaint();
  232. push(@$images,$example);
  233.  
  234. print "Plasma...\n";
  235. $plasma=Image::Magick->new;
  236. $plasma->Set(size=>'130x194');
  237. $x=$plasma->ReadImage('plasma:fractal');
  238. warn "$x" if "$x";
  239. $plasma->Label('Plasma');
  240. push(@$images,$plasma);
  241.  
  242. print "Quantize...\n";
  243. $example=$model->Clone();
  244. $example->Label('Quantize');
  245. $example->Quantize();
  246. push(@$images,$example);
  247.  
  248. print "Radial Blur...\n";
  249. $example=$model->Clone();
  250. $example->Label('Radial Blur');
  251. $example->RadialBlur(10);
  252. push(@$images,$example);
  253.  
  254. print "Raise...\n";
  255. $example=$model->Clone();
  256. $example->Label('Raise');
  257. $example->Raise('10x10');
  258. push(@$images,$example);
  259.  
  260. print "Reduce Noise...\n";
  261. $example=$model->Clone();
  262. $example->Label('Reduce Noise');
  263. $example->ReduceNoise();
  264. push(@$images,$example);
  265.  
  266. print "Resize...\n";
  267. $example=$model->Clone();
  268. $example->Label('Resize');
  269. $example->Resize('50%');
  270. push(@$images,$example);
  271.  
  272. print "Roll...\n";
  273. $example=$model->Clone();
  274. $example->Label('Roll');
  275. $example->Roll(geometry=>'+20+10');
  276. push(@$images,$example);
  277.  
  278. print "Rotate...\n";
  279. $example=$model->Clone();
  280. $example->Label('Rotate');
  281. $example->Rotate(45);
  282. push(@$images,$example);
  283.  
  284. print "Sample...\n";
  285. $example=$model->Clone();
  286. $example->Label('Sample');
  287. $example->Sample('60%');
  288. push(@$images,$example);
  289.  
  290. print "Scale...\n";
  291. $example=$model->Clone();
  292. $example->Label('Scale');
  293. $example->Scale('60%');
  294. push(@$images,$example);
  295.  
  296. print "Segment...\n";
  297. $example=$model->Clone();
  298. $example->Label('Segment');
  299. $example->Segment();
  300. push(@$images,$example);
  301.  
  302. print "Shade...\n";
  303. $example=$model->Clone();
  304. $example->Label('Shade');
  305. $example->Shade(geometry=>'30x30',gray=>'true');
  306. push(@$images,$example);
  307.  
  308. print "Sharpen...\n";
  309. $example=$model->Clone();
  310. $example->Label('Sharpen');
  311. $example->Sharpen('0.0x1.0');
  312. push(@$images,$example);
  313.  
  314. print "Shave...\n";
  315. $example=$model->Clone();
  316. $example->Label('Shave');
  317. $example->Shave('10x10');
  318. push(@$images,$example);
  319.  
  320. print "Shear...\n";
  321. $example=$model->Clone();
  322. $example->Label('Shear');
  323. $example->Shear('-45x45');
  324. push(@$images,$example);
  325.  
  326. print "Spread...\n";
  327. $example=$model->Clone();
  328. $example->Label('Spread');
  329. $example->Spread();
  330. push(@$images,$example);
  331.  
  332. print "Solarize...\n";
  333. $example=$model->Clone();
  334. $example->Label('Solarize');
  335. $example->Solarize();
  336. push(@$images,$example);
  337.  
  338. print "Swirl...\n";
  339. $example=$model->Clone();
  340. $example->Label('Swirl');
  341. $example->Swirl(90);
  342. push(@$images,$example);
  343.  
  344. print "Unsharp Mask...\n";
  345. $example=$model->Clone();
  346. $example->Label('Unsharp Mask');
  347. $example->UnsharpMask('0.0x1.0');
  348. push(@$images,$example);
  349.  
  350. print "Wave...\n";
  351. $example=$model->Clone();
  352. $example->Label('Wave');
  353. $example->Wave('25x150');
  354. push(@$images,$example);
  355. #
  356. # Create image montage.
  357. #
  358. print "Montage...\n";
  359. $montage=$images->Montage(geometry=>'130x194+10+5>',gravity=>'Center',
  360.   tile=>'5x1000+10+200',compose=>'over',background=>'#ffffff',
  361.   font=>'Generic.ttf',pointsize=>18,fill=>'#600',stroke=>'none');
  362.  
  363. $logo=Image::Magick->new();
  364. $logo->Read('logo:');
  365. $logo->Zoom('40%');
  366. $montage->Composite(image=>$logo,gravity=>'North');
  367.  
  368. print "Write...\n";
  369. $montage->Set(matte=>'false');
  370. $montage->Write('demo.jpg');
  371. print "Display...\n";
  372. $montage->Write('win:');
  373.